

package Pruebas.Victor.DAO.Transacciones;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import jumavidesktop.Auxiliar.CargaDatos.CargaDatosPrueba;
import jumavidesktop.Auxiliar.CargaDatos.LimpiaDatosBBDD;
import jumavidesktop.Auxiliar.CargaDatos.cargandoDatosAux;
import jumavidesktop.Persistencia.Dao.Implementaciones.DaoUsuario;
import jumavidesktop.Persistencia.Dao.Interfaces.IDao;
import jumavidesktop.Persistencia.Dao.Interfaces.IDaoUsuarios;
import jumavidesktop.Persistencia.Dao.WrapperTransaction;
import jumavidesktop.configuracion.Configuracion;

/**
 *
 * @author vimso
 */
public class Prueba1 {
    
    static EntityManager em;
public static void main(String[] args) {
        cargandoDatosAux.CargaConfigPatatero();
        em=Configuracion.getInstance().getNewEntityManager();
        System.out.println("-----------------------------");
        System.out.println("Probando transacciones");
        System.out.println("-----------------------------");
        LimpiaDatosBBDD.main(args);
        Metodo3();
    }    
    
    static void Metodo1()
    {
        EntityTransaction tx=em.getTransaction();
        tx.begin();
        IDaoUsuarios daoUsuarios= new DaoUsuario(em);
        daoUsuarios.guardarUsuario(new CargaDatosPrueba().usuario1());
        System.out.println("-----------------------------");
        System.out.println("Proband método 1");
        System.out.println("-----------------------------");        
        tx.commit();
    }
    static void Metodo2()
    {
        
        System.out.println("-----------------------------");
        System.out.println("Proband método 2");
        System.out.println("-----------------------------");
        
        EntityTransaction tx=em.getTransaction();
        tx.begin();
       // System.out.println(tx.getRollbackOnly());
        System.out.println(tx.isActive());
        tx.rollback();
        //System.out.println(tx.getRollbackOnly());
        System.out.println(tx.isActive());
        
    }
    
    static void Metodo3()
    {
        System.out.println("-----------------------------");
        System.out.println("Probando método 3");
        System.out.println("-----------------------------");

        WrapperTransaction wTr = new WrapperTransaction(em.getTransaction());
        try {
            wTr.begin();
            IDaoUsuarios daoUsuarios = new DaoUsuario(em);
            daoUsuarios.guardarUsuario(new CargaDatosPrueba().usuario1());
            errorProvocado();
            wTr.commit();
        } catch (Exception e) {
            wTr.rollback();
        }
    }
    
    static void errorProvocado()
    {
        throw  new UnsupportedOperationException();
    }
}
